package com.cachopoid.utils;

import java.util.ArrayList;
import java.util.Iterator;

import android.content.Context;
import android.net.ParseException;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;

import com.cachopoid.R;
import com.cachopoid.db.CachopoDAO;
import com.cachopoid.vo.CachopoVO;
import com.cachopoid.vo.EstablecimientoVO;

public class CachopoBaseAdapter extends BaseAdapter {
	 
	private static ArrayList<CachopoVO> cachopoArrayList;
	private static ArrayList<EstablecimientoVO> establecimientoArrayList;
	private LayoutInflater l_Inflater;
	CachopoDAO cachopoDAO = new CachopoDAO(null);
	 
	public CachopoBaseAdapter(Context context, ArrayList<CachopoVO> results, ArrayList<EstablecimientoVO> establecimientos) {
		cachopoArrayList = results;
		establecimientoArrayList = establecimientos;
	  l_Inflater = LayoutInflater.from(context);
	}
	 
	public int getCount() {
	  return cachopoArrayList.size();
	}
	 
	public Object getItem(int position) {
	  return cachopoArrayList.get(position);
	}
	 
	public long getItemId(int position) {
	  return position;
	}
	 
	public View getView(int position, View convertView, ViewGroup parent) {
	  ViewHolder holder;
	  if (convertView == null) {
	   convertView = l_Inflater.inflate(R.layout.template_rankingcachopo_view, null);
	   holder = new ViewHolder();
	   holder.txtCachopoNombre = (TextView) convertView.findViewById(R.id.nombreCachopo);
	   holder.txtCachopoDescripcion = (TextView) convertView.findViewById(R.id.descripcion);
	   holder.txtCachopoNombreEstablecimiento = (TextView) convertView.findViewById(R.id.nombreEstablecimiento);
	   holder.imageRanking = (ImageView) convertView.findViewById(R.id.imagenRanking);
	   holder.rtPuntuacionMediaBar = (RatingBar) convertView.findViewById(R.id.puntuacionMediaBar);
	   holder.txtPuntuacionMedia = (TextView) convertView.findViewById(R.id.txtPuntuacionMedia);
	 
	   convertView.setTag(holder);
	  } else {
	   holder = (ViewHolder) convertView.getTag();
	  }
	  
	  holder.txtCachopoNombre.setText(cachopoArrayList.get(position).getNombre());
	  holder.txtCachopoDescripcion.setText(cachopoArrayList.get(position).getDescripcion());
	  holder.imageRanking.setImageDrawable(Utils.getImagenRanking(parent.getContext(),position));
	  holder.txtPuntuacionMedia.setText(cachopoArrayList.get(position).getMediaDeVotos().toString());
	  holder.rtPuntuacionMediaBar.setRating(cachopoArrayList.get(position).getMediaDeVotos().floatValue());
	
	  
	  EstablecimientoVO establecimientoVO =  new EstablecimientoVO();
	  /* for (Iterator<EstablecimientoVO> iterator = establecimientoArrayList.iterator(); iterator.hasNext();) {  
		establecimientoVO = (EstablecimientoVO) iterator.next();
		if(establecimientoVO.getIdEstablecimiento() == cachopoArrayList.get(position).getIdEstablecimiento()){
			holder.txtCachopoNombreEstablecimiento.setText(establecimientoVO.getNombre());
		}
		
	  }*/
	  if(establecimientoArrayList!=null){
		  establecimientoVO=Utils.devuelveElEstablecXCachopo(establecimientoArrayList,cachopoArrayList,establecimientoVO,position);
	  }
	  
	  if(establecimientoVO.getIdEstablecimiento()!=null){
		  holder.txtCachopoNombreEstablecimiento.setText(establecimientoVO.getNombre());
	  }

	  return convertView;
	}
	 
	static class ViewHolder {
		TextView txtCachopoNombre;
		TextView txtCachopoDescripcion;
		TextView txtCachopoNombreEstablecimiento;
		RatingBar rtPuntuacionMediaBar;
		TextView txtPuntuacionMedia;
		ImageView imageRanking;
	}
	 
	
	/**
	 * Devuelve el establecimiento al que hace pertenece el cachopo
	 * @param position
	 * @return establecimientoVO
	 */
	public EstablecimientoVO devuelveElEstablecXCachopo(EstablecimientoVO establecimientoVO,int position){
		 
		  for (Iterator<EstablecimientoVO> iterator = establecimientoArrayList.iterator(); iterator.hasNext();) {  
				establecimientoVO = (EstablecimientoVO) iterator.next();
				if(establecimientoVO.getIdEstablecimiento() == cachopoArrayList.get(position).getIdEstablecimiento()){
					
					return establecimientoVO;
				}
				
			}
		 
		 return establecimientoVO;
		
	}
	
}
